"""第 6 课：Lambda 函数的高级应用和最佳实践"""

'''一、 lambda 过滤的复杂用法'''
list1 = list(range(1,21))
print("list1 = ",list1)
#找出列表list1中可以被3整除，但不能被5整除的数
list2 = list(filter( lambda x : x %3 ==0 and x%5 !=0 ,list1))
print("找出列表list1中可以被3整除，但不能被5整除的数：\n",list2)

''' 二、嵌套lambda函数的使用'''
func = lambda x : (lambda y : (lambda z : x+y+z) )
print(" func 类型：\n",type(func))
f1 = func(1) # lambda y : (lambda z : 1+y+z)
print(" f1 类型：\n",type(f1))
f2 = f1(2) # lambda z : 1+2+z
print(" f2 类型：\n",type(f2))
f3 = f2(3) # 1+2+3
print(" f3 类型：\n",type(f3))
print("嵌套lambda函数的使用：\n",f3)

""" 三、lambda 函数的最佳实践 reduce 函数的使用"""
from functools import reduce
list3 = [1,2,3,4,5]

# 使用reduce函数计算列表中所有元素的和
sum_result = reduce(lambda x,y : x+y,list3)
print("使用reduce函数计算列表中所有元素的和：\n",sum_result)
